El análisis multivariado de similitud es una técnica de análisis multivariado que se utiliza en ecología y otras disciplinas para evaluar la similitud o diferencia entre grupos de muestras o observaciones. Esta técnica se basa en el uso de medidas de similitud o dissimilaridad, como la distancia euclidiana o la distancia de Bray-Curtis, para calcular la similitud o diferencia entre las muestras o observaciones. Dentro de los métodos de análisis multivariado encontramos el análisis de componentes principales (PCA) o el escalado no métrico multidimensional (NMDS).
Para esta clase utilizaremos la base de datos
bettles.txt. Estos datos muestran las abundancias de
escarabajos en tres tipos de hábitat en el Reino Unido. Hay 6 réplicas
para cada hábitat (Wood, Grass, Edge).
## here() starts at C:/Users/Pc/OneDrive - University of Massachusetts/ProjectR_Github/CursoAnalisisEstadistico/AE_EstudiosEcologicos
bettles <- read.table( "data/bettles.txt")
En nuestra base de datos bettles podemos observar que la
variable Habitat es un factor con tres categorias: E:
Borde, G: Grama, W: Bosque.
table(bettles$Habitat)
##
## E G W
## 6 6 6
Nuestro objetivo sera determinar si los tipos de habitat presentan disimilitud en base a la comunidad de escarabajos. Para estos realizaremos primero un PCA, y luego un NMDS.
El análisis de componentes principales (PCA, por sus siglas en inglés) es una técnica de análisis multivariado que se utiliza para reducir la dimensión de un conjunto de datos y simplificar la interpretación de los mismos. Esta técnica se basa en la idea de que las variables originales pueden ser representadas por un conjunto más reducido de variables denominadas “componentes principales”, que son combinaciones lineales de las variables originales. Cada componente principal es una combinación lineal de las variables originales que maximiza la varianza explicada en los datos, y los componentes principales se ordenan de acuerdo con la cantidad de varianza explicada.
El PCA se utiliza a menudo para visualizar patrones o tendencias en los datos y para evaluar la relación entre las variables originales. También se puede utilizar para seleccionar un subconjunto de variables importantes para un análisis posterior, como el análisis de regresión o la clasificación.
FactorMineR es un paqute en R que proporciona un conjunto de funciones y herramientas para llevar a cabo análisis multivariados, incluyendo el análisis de componentes principales (PCA). Para llevar a cabo un análisis de PCA con FactorMineR, es necesario cargar los datos en R y utilizar la función “PCA” de la biblioteca FactorMineR.
library(FactoMineR)
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
Antes de realizar nuestro PCA, covertiremos nuestra variable
Habitat a factor.
bettles$Habitat <- factor(bettles$Habitat)
Algunas veces necesitaremos estandarizar las variables
bettles_stan <- scale(bettles[,1:48])
Ahora realizamos el PCA
bettles_pca <- PCA(bettles_stan, scale.unit = TRUE, ncp = 5)
## Warning: ggrepel: 24 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
fviz_pca_biplot(bettles_pca,
axes = c(1,2),
habillage = bettles$Habitat,
addEllipses = TRUE,
geom = FALSE,
arrow = FALSE) +
theme_classic()
El escalado no métrico multidimensional (NMDS, por sus siglas en inglés) es una técnica de análisis multivariado que se utiliza para representar gráficamente la similitud o diferencia entre grupos de muestras o observaciones en un espacio multidimensional. A diferencia del análisis de componentes principales (PCA), que es un método métrico que se basa en la correlación entre las variables, el NMDS es un método no métrico que no asume ningún tipo de relación lineal entre las variables. En su lugar, se basa en la similitud de patrones entre las muestras o observaciones, lo que lo hace útil para visualizar la similitud o diferencia entre diferentes grupos de muestras.
El NMDS se utiliza a menudo en ecología y otras disciplinas para evaluar la similitud entre las comunidades de especies en diferentes áreas o para evaluar la similitud entre diferentes comunidades de microorganismos. También se puede utilizar para evaluar la similitud entre diferentes grupos de individuos en términos de sus características o comportamientos.
Para llevar a cabo un análisis de NMDS, se necesitan datos de similitud o dissimilaridad entre las muestras o observaciones. Estos datos pueden obtenerse a partir de medidas de similitud o dissimilaridad entre las muestras, como la distancia euclidiana o la distancia de Bray-Curtis. Una vez que se tienen los datos de similitud o dissimilaridad, se puede utilizar un software de análisis multivariado para llevar a cabo el análisis de NMDS y visualizar los resultados en un gráfico en dos o tres dimensiones.
library(vegan)
bettles_nmds <- metaMDS(bettles[,1:48],
distance = "bray",
k= 2, trymax = 999)
## Square root transformation
## Wisconsin double standardization
## Run 0 stress 0.042627
## Run 1 stress 0.0462438
## Run 2 stress 0.04262697
## ... New best solution
## ... Procrustes: rmse 0.0004654891 max resid 0.000724164
## ... Similar to previous best
## Run 3 stress 0.0419365
## ... New best solution
## ... Procrustes: rmse 0.01310659 max resid 0.03713411
## Run 4 stress 0.04565117
## Run 5 stress 0.04281224
## Run 6 stress 0.04281222
## Run 7 stress 0.04207206
## ... Procrustes: rmse 0.008339761 max resid 0.02682472
## Run 8 stress 0.04575811
## Run 9 stress 0.04575819
## Run 10 stress 0.0420719
## ... Procrustes: rmse 0.008348164 max resid 0.02694916
## Run 11 stress 0.04560172
## Run 12 stress 0.04522187
## Run 13 stress 0.04575807
## Run 14 stress 0.04536737
## Run 15 stress 0.04536744
## Run 16 stress 0.04540587
## Run 17 stress 0.04575821
## Run 18 stress 0.04536713
## Run 19 stress 0.04553612
## Run 20 stress 0.04522214
## Run 21 stress 0.04262692
## Run 22 stress 0.0452219
## Run 23 stress 0.04193589
## ... New best solution
## ... Procrustes: rmse 0.0002676486 max resid 0.0004371458
## ... Similar to previous best
## *** Best solution repeated 1 times
Una vez listo el nmds, revisaremos el stress
bettles_nmds$stress
## [1] 0.04193589
Para graficar nuestro nmds con ggplot2 es necesario preparar nuestra base de datos.
NMDS_habitat <- data.frame(Habitat = bettles$Habitat,
bettles_nmds$points)
NMDS_habitat
## Habitat MDS1 MDS2
## E1 E -0.08614118 -0.3394751
## E2 E -0.20624029 -0.1621569
## E3 E -0.20207705 -0.3176030
## E4 E 0.16293152 -0.7103119
## E5 E -0.02578671 -0.3879262
## E6 E -0.07001888 -0.1044874
## G1 G 0.92586677 0.4010606
## G2 G 0.67541488 0.2470033
## G3 G 0.70335189 -0.2298871
## G4 G 0.98289435 0.1405966
## G5 G 0.89890307 0.2462279
## G6 G 0.88657614 0.1100334
## W1 W -0.76168945 0.1219924
## W2 W -0.76395126 0.2365477
## W3 W -0.84022348 0.1486515
## W4 W -0.69912426 0.1642717
## W5 W -0.72698172 0.1825577
## W6 W -0.85370433 0.2529048
Ahora podemos preparar la tabla para especies de escarabajos
NMDS_especies <- data.frame(Especies = colnames(bettles[,1:48]),
bettles_nmds$species)
NMDS_especies
## Especies MDS1 MDS2
## Aba.par Aba.par -0.38099955 -0.009296500
## Acu.dub Acu.dub 1.22563892 0.465586594
## Ago.afr Ago.afr 1.11423737 0.215433761
## Ago.ful Ago.ful 1.19354369 0.542443484
## Ago.mue Ago.mue 0.09416952 -0.972239412
## Ago.vid Ago.vid 1.25041617 0.483663969
## Ama.aen Ama.aen 1.21447298 0.703055438
## Ama.com Ama.com 1.17910429 0.431635125
## Ama.fam Ama.fam 1.21447298 0.703055438
## Ama.ple Ama.ple 1.06350330 -0.072685654
## Ama.sim Ama.sim 1.28927688 0.246464448
## Bad.bul Bad.bul 1.21593939 0.284645838
## Bem.big Bem.big 0.97114691 0.144629168
## Bem.gut Bem.gut 0.81667018 -0.408969208
## Bem.lam Bem.lam 0.66075469 -0.147896857
## Bem.man Bem.man 0.65067279 -0.074540807
## Bem.obt Bem.obt 1.18474786 0.434639806
## Bra.har Bra.har 0.88595157 0.432994347
## Bra.sha Bra.sha 1.09263730 0.434132557
## Cal.fus Cal.fus 1.07708276 0.213028055
## Cal.rot Cal.rot -0.57817211 0.026072808
## Car.vio Car.vio -0.71826056 0.029936878
## Cli.fos Cli.fos 1.09058022 0.281269296
## Cur.aul Cur.aul 0.21371965 -1.245169932
## Cyc.car Cyc.car -1.01274717 0.320128872
## Har.ruf Har.ruf 0.21371965 -1.245169932
## Lei.fer Lei.fer 0.52290625 -0.816375125
## Lei.ful Lei.ful -0.13313812 -0.618918213
## Lei.ruf Lei.ruf -0.91363613 0.244289173
## Lei.spi Lei.spi -0.51779947 -0.164114203
## Lor.pil Lor.pil 0.10661561 -1.000653594
## Neb.bre Neb.bre -0.47369402 0.028169581
## Not.big Not.big -0.72993347 0.353456787
## Not.ruf Not.ruf 1.10486937 0.072751191
## Ocy.har Ocy.har 0.18743542 -0.318563219
## Pat.atr Pat.atr 0.21371965 -1.245169932
## Pla.ass Pla.ass -0.34714007 0.034679004
## Poe.cup Poe.cup 0.52520714 -0.144108522
## Pte.mad Pte.mad -0.40513776 -0.008918491
## Pte.mel Pte.mel -0.10691218 -0.323857981
## Pte.nige Pte.nige -0.46914237 0.113543388
## Pte.nigr Pte.nigr 0.43382834 -0.201851758
## Pte.obl Pte.obl -0.10117614 -0.696279870
## Pte.str Pte.str 0.16429300 -0.135377671
## Pte.ver Pte.ver 1.12842681 0.324483088
## Sto.pum Sto.pum 0.39816990 -0.173177802
## Syn.niv Syn.niv 1.08745169 0.399731644
## Tre.qua Tre.qua 1.20863515 0.391637404
Ahora graficaremos
ggplot()+
geom_point(data= NMDS_habitat, aes(x= MDS1, y= MDS2, color = Habitat))+
stat_ellipse(data= NMDS_habitat, aes(x= MDS1, y= MDS2, fill = Habitat),
alpha = 0.3, geom = "polygon")+
geom_text(data= NMDS_especies, aes(x= MDS1, y= MDS2, label = Especies),
size= 2)+
theme_bw()
PERMANOVA es un método de análisis de la varianza multivariante que se utiliza para evaluar la similitud o diferencias entre grupos de muestras en una o más variables categóricas o continúas. Se basa en el análisis de la varianza univariante (ANOVA), pero es más adecuado para datos multivariantes en los que hay más de una variable dependiente.
El método de PERMANOVA permite comparar grupos de muestras en términos de la similitud o diferencias de sus patrones de variación en un conjunto de variables. Se puede utilizar para evaluar si hay diferencias significativas entre grupos de muestras en un conjunto de variables y si hay una asociación entre estas variables y la variable categórica independiente.
El método de PERMANOVA se puede aplicar a cualquier tipo de datos multivariantes, incluyendo datos de composición química, datos de secuenciación de ADN, datos de imágenes y datos de mediciones físicas o químicas. Se puede utilizar para evaluar la similitud o diferencias entre grupos de muestras en una amplia variedad de contextos, como la ecología, la biología molecular y la ingeniería.
En R, el método de PERMANOVA se puede realizar mediante el uso de la función adonis del paquete vegan.
Ejemplo
bettles_per <- adonis2(bettles[ , 1:48] ~ Habitat, data = bettles)
bettles_per
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## adonis2(formula = bettles[, 1:48] ~ Habitat, data = bettles)
## Df SumOfSqs R2 F Pr(>F)
## Habitat 2 1.30897 0.8585 45.503 0.001 ***
## Residual 15 0.21575 0.1415
## Total 17 1.52472 1.0000
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El estadístico F mide la relación entre la varianza
explicada por el modelo y la varianza no explicada por el modelo. Se
calcula como la relación entre la varianza media de los grupos y la
varianza media de los residuales.
Un valor alto de F indica que hay una gran diferencia entre la varianza explicada por el modelo y la varianza no explicada, lo que sugiere que el modelo es un buen ajuste para los datos. Por el contrario, un valor bajo de F indica que hay poca diferencia entre la varianza explicada y la no explicada, lo que sugiere que el modelo no es un buen ajuste para los datos.
El coeficiente de determinación (R²) es una medida de
qué tan bien un modelo se ajusta a los datos. En el contexto de un
análisis de varianza multivariado permutado (PERMANOVA), R² se utiliza
para evaluar qué tan bien el modelo de PERMANOVA se ajusta a los
datos.
El valor de R² se calcula como la relación entre la varianza total explicada por el modelo y la varianza total de los datos. Un valor de R² cercano a 1 indica un ajuste muy bueno del modelo a los datos, mientras que un valor de R² cercano a 0 indica un ajuste pobre.
El R² para los residuales mide qué tan bien el modelo se ajusta a los datos excluyendo la varianza explicada por el efecto de los factores. Es decir, mide la proporción de varianza total que no es explicada por el modelo. Un valor alto de R² para los residuales indica un ajuste pobre del modelo a los datos, mientras que un valor bajo indica un ajuste bueno.
El R² para el total mide qué tan bien el modelo se ajusta a los datos incluyendo la varianza explicada por el efecto de los factores. Es decir, mide la proporción de varianza total explicada por el modelo. Un valor alto de R² para el total indica un ajuste muy bueno del modelo a los datos, mientras que un valor bajo indica un ajuste pobre.
Prueba de contraste
library(RVAideMemoire)
## *** Package RVAideMemoire v 0.9-81-2 ***
bettles_per_con <- pairwise.perm.manova(dist(bettles[,1:48]), bettles$Habitat,
nperm = 999)
## 'adonis' will be deprecated: use 'adonis2' instead
## 'adonis' will be deprecated: use 'adonis2' instead
## 'adonis' will be deprecated: use 'adonis2' instead
bettles_per_con
##
## Pairwise comparisons using permutation MANOVAs on a distance matrix
##
## data: dist(bettles[, 1:48]) by bettles$Habitat
## 999 permutations
##
## E G
## G 0.0045 -
## W 0.1030 0.0030
##
## P value adjustment method: fdr